Websites and other systems for delivering remote content may be configured to provide large amounts of data over a network within relatively short periods of time. For example, a server for a graphically-intensive website may need to deliver data corresponding to video, audio, or multimedia over a network in response to a client computer's request for website content. In some instances, the rate at which the data is received by the client computer can greatly affect a user's experience. For example, if the content to be delivered is an audio or video file, then the content must be delivered in a timely enough manner that it can be reconstructed at the client computer to result in audio or video that does not skip or stall unnecessarily. Unfortunately, various aspects of the network are not controlled by the server, and thus, content delivered to the client is not always received in a manner that enables a user at the client to appreciate the delivered content as intended.
Some conventional systems attempt to reduce the above issue of content delivery over a network by determining the bandwidth available to a client computer before transmitting content to the client computer. After determining the bandwidth, a conventional system may reduce the quality of the content, thereby reducing the amount of data transmitted to deliver the content, if the bandwidth is lower than desirable for full quality. The bandwidth determination generally comprises transmitting a file to the client computer and detecting the rate at which the client computer downloads the file. Because repeatedly transmitting the file would be impractical, the bandwidth determination is performed only once, before content delivery beings. Thus, these conventional systems select content for delivery based only on a one-time test and do not react to changing network conditions.